
import { getDicts } from '@/api/system/dict'
import { onMounted, ref } from 'vue'

// 获取枚举 dict
export function useGetEnum() {
  const dictEnum = ref([]) //  后台直接返回的 原始数据
  const getDictsApi = () => {
    return getDicts().then((res) => {
      dictEnum.value = res
    })
  }

  const dictEnumReveal = ref({})  // 用于下拉框的 数组数据
  const getDictEnumReveal = () => {
    const enums = dictEnum.value.reduce((obj, item) => {
      obj[item.name] = item.dictDetails
      return obj
    })
    dictEnumReveal.value = enums
  }
  // 用于反显的方法
  // enumKey：     dictEnumReveal当中的某个key
  // currentKey：  当前的枚举值
  const getEnumlabel = (enumKey, currentKey) => {
    const arr = dictEnumReveal.value[enumKey] || []
    const thisItem = arr.find((item) => item.value === currentKey)
    return thisItem ? thisItem.label : ''
  }
  // 处理下拉框枚举 arr 或 string
  const optionFunc = (source) => {
    if (source instanceof Array) return source;
    return dictEnumReveal.value[source];
  };
  onMounted(async () => {
    await getDictsApi()
    getDictEnumReveal()
  })
  return { dictEnumReveal, getEnumlabel, optionFunc }
}

// 处理传入宽 可以是字符串或数字
export const propsWidth = (v) => {
  if (Number.isInteger(v)) return v + "px";
  return v;
};

